<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>模块</title>
  <style>
    div, p, li {
      line-height: 40px
    }
    span {
      color: red
    }
  </style>
</head>
<body>
  <h2>命名空间-实战指南</h2>
  <ul>
    <li>我们需要有效的组织代码，以便于记录他们的类型的同时还不用担心与其他对象产生命名冲突</li>
    <li>我们把验证器包裹到一个命名空间内，而不是把他么放到全局命名空间下</li>
    <li>把所有的与验证器相关的类型都放到一个叫做Validation的命名空间里叫单文件命名空间</li>
    <li>我们想让这些接口和类在命名空间之外也是可访问的，所以要使用export</li>
    <li>当应用变得越来越大时，我们需要将代码分割到不同的文件中以便于维护，于是就有了多文件命名空间，需要用到引用标签reference path = '...'</li>
    <li>
      当涉及多文件时，必须确保所有编译后的代码都被加载了。加载代码由两种方式：（1）tsc --outFile
      (2)默认编译每一个文件，然后在页面上用script标签把所有生成的Javascript文件按正确的顺序引进来
    </li>
    <li>
      为了描述不是用TypeScript编写的类库的类型，我们需要声明类库导出的API，经常在<span>.d.ts</span>里写这些声明
    </li>
  </ul>
  
</body>
</html>